/**
* Copyright (c) By zengqh.
*
* This program is just for fun or demo, in the hope that it  
* will be useful, you can redistribute it and/or modify freely.
*
* Time: 2013/03/07
* File: ProgramUniform.h
**/

#pragma once

#include <math/color.h>
#include <math/vector2.h>
#include <math/vector3.h>
#include <math/vector4.h>
#include <math/matrix4.h>

namespace HY
{

class ProgramUniform
{
public:
	virtual void set(int x) = 0;
	virtual void set(float x) = 0;
	virtual void set2(const int* x) = 0;
	virtual void set2(const float* x) = 0;
	virtual void set3(const int* x) = 0;
	virtual void set3(const float* x) = 0;
	virtual void set4(const int* x) = 0;
	virtual void set4(const float* x) = 0;
	virtual void set(const Matrix4& x) = 0;

	virtual void set(const Color& clr) = 0;
	virtual void set(const Vector2& v) = 0;
	virtual void set(const Vector3& v) = 0;
	virtual void set(const Vector4& v) = 0;
protected:
	ProgramUniform() {}
	virtual ~ProgramUniform() {}
};

}